/* 设求出指定结点在给定二叉排序树的层次 */

#include <iostream>
#include "BiTree.h"
using namespace std;

// 求指定结点所在的层次
int level(BTNode *bt, char k)
{
  // 记录结点所在层次
  int n = 1;
  
  // 辅助指针
  BTNode *t = bt;
  
  // 二叉树不为空
  if (bt != NULL)
  {
    // 查找值为k的结点
    while (t->data != k)
    {
      // 在右子树中查找
      if (t->data < k)
        t = t->rchild;
      
      // 在左子树中查找
      else
        t = t->lchild;
      
      // 更新层次
      ++n;
    }
  }
  
  // 返回记录的层次
  return n;
}

int main()
{
  // 创建二叉树
  BTNode *T = create_BiTree();
  
  cout << "求指定结点所在的层次:" << level(T, '4');
  return 0;
}